Apache Cassandra 是一个分布式 NoSQL 数据库，支持高可用性和线性扩展。以下是使用 Java 连接和操作 Cassandra 的示例代码。

---

### **1. 环境准备**
确保你已经安装了以下工具：
- JDK 8+
- Apache Cassandra
- Maven

---

### **2. 创建 Maven 项目**
在 `pom.xml` 中添加 Cassandra 依赖：
```xml
<dependencies>
    <dependency>
        <groupId>com.datastax.oss</groupId>
        <artifactId>java-driver-core</artifactId>
        <version>4.15.0</version>
    </dependency>
</dependencies>
```

---

### **3. 编写 Java 代码**
以下是一个简单的 Java 程序，用于连接 Cassandra 并执行 CRUD 操作。

#### **3.1 连接 Cassandra**
```java
import com.datastax.oss.driver.api.core.CqlSession;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;

public class CassandraExample {
    public static void main(String[] args) {
        // 连接到 Cassandra
        try (CqlSession session = CqlSession.builder()
                .withKeyspace("my_keyspace") // 指定 keyspace
                .build()) {
            System.out.println("Connected to Cassandra!");

            // 创建表
            createTable(session);

            // 插入数据
            insertData(session, 1, "Alice", "alice@example.com");

            // 查询数据
            queryData(session);

            // 更新数据
            updateData(session, 1, "Alice Smith");

            // 删除数据
            deleteData(session, 1);
        }
    }
}
```

#### **3.2 创建表**
```java
private static void createTable(CqlSession session) {
    String query = "CREATE TABLE IF NOT EXISTS users ("
            + "id int PRIMARY KEY, "
            + "name text, "
            + "email text)";
    session.execute(query);
    System.out.println("Table created!");
}
```

#### **3.3 插入数据**
```java
private static void insertData(CqlSession session, int id, String name, String email) {
    String query = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
    session.execute(query, id, name, email);
    System.out.println("Data inserted!");
}
```

#### **3.4 查询数据**
```java
private static void queryData(CqlSession session) {
    String query = "SELECT * FROM users";
    ResultSet resultSet = session.execute(query);
    for (Row row : resultSet) {
        System.out.println("ID: " + row.getInt("id") +
                ", Name: " + row.getString("name") +
                ", Email: " + row.getString("email"));
    }
}
```

#### **3.5 更新数据**
```java
private static void updateData(CqlSession session, int id, String newName) {
    String query = "UPDATE users SET name = ? WHERE id = ?";
    session.execute(query, newName, id);
    System.out.println("Data updated!");
}
```

#### **3.6 删除数据**
```java
private static void deleteData(CqlSession session, int id) {
    String query = "DELETE FROM users WHERE id = ?";
    session.execute(query, id);
    System.out.println("Data deleted!");
}
```

---

### **4. 运行代码**
1. 启动 Cassandra：
   ```bash
   cassandra -f
   ```
2. 创建 keyspace：
   ```sql
   CREATE KEYSPACE my_keyspace WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
   ```
3. 编译并运行程序：
   ```bash
   mvn clean package
   java -cp target/cassandra-example-1.0.jar CassandraExample
   ```

---

### **5. 代码说明**
- **CqlSession**：用于连接 Cassandra 并执行 CQL 查询。
- **CRUD 操作**：通过 CQL 语句实现数据的增删改查。
- **Prepared Statements**：使用占位符（`?`）防止 SQL 注入。

---

### **6. 扩展**
- **批量操作**：使用 `BatchStatement` 执行批量插入或更新。
- **异步查询**：使用 `executeAsync` 执行异步查询。
- **连接池**：配置连接池以提高性能。

---

### **7. 注意事项**
- 确保 Cassandra 服务已启动。
- 在生产环境中，使用更复杂的复制策略（如 `NetworkTopologyStrategy`）。
- 处理异常情况，如连接失败或查询错误。

---

### **8. 完整示例**
假设你的项目结构如下：
```
src/main/java/CassandraExample.java
pom.xml
```

运行后，输出如下：
```
Connected to Cassandra!
Table created!
Data inserted!
ID: 1, Name: Alice, Email: alice@example.com
Data updated!
Data deleted!
```

---

希望这个示例对你有帮助！如果有其他问题，请随时提问。